#include <iostream>

using namespace std;

class A{};

class B{};

class C{
public:
    operator A()
    {
        return A();
    }

    explicit operator B()       //指定显式转换，去除隐式转换
    {
        return B();
    }
};

int main()
{
    C c;
    A a = c;
    // B b = c;                 // error, 不存在从C到B的隐式转换
    B bb = static_cast<B>(c);   // ok, 可以显示转换
}